#include <iostream>
#include <string>
#include <pybind11/pybind11.h>
#include <autocxxpy/autocxxpy.hpp>

#include "module.hpp"
#include "wrappers.hpp"
#include "generated_functions.h"

#include "xtp_trader_api.h"
#include "xtp_quote_api.h"


void generate_class_XTP_API_QuoteSpi(pybind11::object & parent)
{
    pybind11::class_<XTP::API::QuoteSpi, PyQuoteSpi> c(parent, "QuoteSpi");
    if constexpr (std::is_default_constructible_v<PyQuoteSpi>)
        c.def(pybind11::init<>());
    c.def("OnDisconnected",
        autocxxpy::apply_function_transform<
            autocxxpy::function_constant<
                &XTP::API::QuoteSpi::OnDisconnected
            >, 
            brigand::list<
            >
        >::value,
        pybind11::return_value_policy::reference,
        pybind11::call_guard<pybind11::gil_scoped_release>()
    );
    c.def("OnError",
        autocxxpy::apply_function_transform<
            autocxxpy::function_constant<
                &XTP::API::QuoteSpi::OnError
            >, 
            brigand::list<
            >
        >::value,
        pybind11::return_value_policy::reference,
        pybind11::call_guard<pybind11::gil_scoped_release>()
    );
    c.def("OnSubMarketData",
        autocxxpy::apply_function_transform<
            autocxxpy::function_constant<
                &XTP::API::QuoteSpi::OnSubMarketData
            >, 
            brigand::list<
            >
        >::value,
        pybind11::return_value_policy::reference,
        pybind11::call_guard<pybind11::gil_scoped_release>()
    );
    c.def("OnUnSubMarketData",
        autocxxpy::apply_function_transform<
            autocxxpy::function_constant<
                &XTP::API::QuoteSpi::OnUnSubMarketData
            >, 
            brigand::list<
            >
        >::value,
        pybind11::return_value_policy::reference,
        pybind11::call_guard<pybind11::gil_scoped_release>()
    );
    c.def("OnDepthMarketData",
        autocxxpy::apply_function_transform<
            autocxxpy::function_constant<
                &XTP::API::QuoteSpi::OnDepthMarketData
            >, 
            brigand::list<
            >
        >::value,
        pybind11::return_value_policy::reference,
        pybind11::call_guard<pybind11::gil_scoped_release>()
    );
    c.def("OnSubOrderBook",
        autocxxpy::apply_function_transform<
            autocxxpy::function_constant<
                &XTP::API::QuoteSpi::OnSubOrderBook
            >, 
            brigand::list<
            >
        >::value,
        pybind11::return_value_policy::reference,
        pybind11::call_guard<pybind11::gil_scoped_release>()
    );
    c.def("OnUnSubOrderBook",
        autocxxpy::apply_function_transform<
            autocxxpy::function_constant<
                &XTP::API::QuoteSpi::OnUnSubOrderBook
            >, 
            brigand::list<
            >
        >::value,
        pybind11::return_value_policy::reference,
        pybind11::call_guard<pybind11::gil_scoped_release>()
    );
    c.def("OnOrderBook",
        autocxxpy::apply_function_transform<
            autocxxpy::function_constant<
                &XTP::API::QuoteSpi::OnOrderBook
            >, 
            brigand::list<
            >
        >::value,
        pybind11::return_value_policy::reference,
        pybind11::call_guard<pybind11::gil_scoped_release>()
    );
    c.def("OnSubTickByTick",
        autocxxpy::apply_function_transform<
            autocxxpy::function_constant<
                &XTP::API::QuoteSpi::OnSubTickByTick
            >, 
            brigand::list<
            >
        >::value,
        pybind11::return_value_policy::reference,
        pybind11::call_guard<pybind11::gil_scoped_release>()
    );
    c.def("OnUnSubTickByTick",
        autocxxpy::apply_function_transform<
            autocxxpy::function_constant<
                &XTP::API::QuoteSpi::OnUnSubTickByTick
            >, 
            brigand::list<
            >
        >::value,
        pybind11::return_value_policy::reference,
        pybind11::call_guard<pybind11::gil_scoped_release>()
    );
    c.def("OnTickByTick",
        autocxxpy::apply_function_transform<
            autocxxpy::function_constant<
                &XTP::API::QuoteSpi::OnTickByTick
            >, 
            brigand::list<
            >
        >::value,
        pybind11::return_value_policy::reference,
        pybind11::call_guard<pybind11::gil_scoped_release>()
    );
    c.def("OnSubscribeAllMarketData",
        autocxxpy::apply_function_transform<
            autocxxpy::function_constant<
                &XTP::API::QuoteSpi::OnSubscribeAllMarketData
            >, 
            brigand::list<
            >
        >::value,
        pybind11::return_value_policy::reference,
        pybind11::call_guard<pybind11::gil_scoped_release>()
    );
    c.def("OnUnSubscribeAllMarketData",
        autocxxpy::apply_function_transform<
            autocxxpy::function_constant<
                &XTP::API::QuoteSpi::OnUnSubscribeAllMarketData
            >, 
            brigand::list<
            >
        >::value,
        pybind11::return_value_policy::reference,
        pybind11::call_guard<pybind11::gil_scoped_release>()
    );
    c.def("OnSubscribeAllOrderBook",
        autocxxpy::apply_function_transform<
            autocxxpy::function_constant<
                &XTP::API::QuoteSpi::OnSubscribeAllOrderBook
            >, 
            brigand::list<
            >
        >::value,
        pybind11::return_value_policy::reference,
        pybind11::call_guard<pybind11::gil_scoped_release>()
    );
    c.def("OnUnSubscribeAllOrderBook",
        autocxxpy::apply_function_transform<
            autocxxpy::function_constant<
                &XTP::API::QuoteSpi::OnUnSubscribeAllOrderBook
            >, 
            brigand::list<
            >
        >::value,
        pybind11::return_value_policy::reference,
        pybind11::call_guard<pybind11::gil_scoped_release>()
    );
    c.def("OnSubscribeAllTickByTick",
        autocxxpy::apply_function_transform<
            autocxxpy::function_constant<
                &XTP::API::QuoteSpi::OnSubscribeAllTickByTick
            >, 
            brigand::list<
            >
        >::value,
        pybind11::return_value_policy::reference,
        pybind11::call_guard<pybind11::gil_scoped_release>()
    );
    c.def("OnUnSubscribeAllTickByTick",
        autocxxpy::apply_function_transform<
            autocxxpy::function_constant<
                &XTP::API::QuoteSpi::OnUnSubscribeAllTickByTick
            >, 
            brigand::list<
            >
        >::value,
        pybind11::return_value_policy::reference,
        pybind11::call_guard<pybind11::gil_scoped_release>()
    );
    c.def("OnQueryAllTickers",
        autocxxpy::apply_function_transform<
            autocxxpy::function_constant<
                &XTP::API::QuoteSpi::OnQueryAllTickers
            >, 
            brigand::list<
            >
        >::value,
        pybind11::return_value_policy::reference,
        pybind11::call_guard<pybind11::gil_scoped_release>()
    );
    c.def("OnQueryTickersPriceInfo",
        autocxxpy::apply_function_transform<
            autocxxpy::function_constant<
                &XTP::API::QuoteSpi::OnQueryTickersPriceInfo
            >, 
            brigand::list<
            >
        >::value,
        pybind11::return_value_policy::reference,
        pybind11::call_guard<pybind11::gil_scoped_release>()
    );
    c.def("OnSubscribeAllOptionMarketData",
        autocxxpy::apply_function_transform<
            autocxxpy::function_constant<
                &XTP::API::QuoteSpi::OnSubscribeAllOptionMarketData
            >, 
            brigand::list<
            >
        >::value,
        pybind11::return_value_policy::reference,
        pybind11::call_guard<pybind11::gil_scoped_release>()
    );
    c.def("OnUnSubscribeAllOptionMarketData",
        autocxxpy::apply_function_transform<
            autocxxpy::function_constant<
                &XTP::API::QuoteSpi::OnUnSubscribeAllOptionMarketData
            >, 
            brigand::list<
            >
        >::value,
        pybind11::return_value_policy::reference,
        pybind11::call_guard<pybind11::gil_scoped_release>()
    );
    c.def("OnSubscribeAllOptionOrderBook",
        autocxxpy::apply_function_transform<
            autocxxpy::function_constant<
                &XTP::API::QuoteSpi::OnSubscribeAllOptionOrderBook
            >, 
            brigand::list<
            >
        >::value,
        pybind11::return_value_policy::reference,
        pybind11::call_guard<pybind11::gil_scoped_release>()
    );
    c.def("OnUnSubscribeAllOptionOrderBook",
        autocxxpy::apply_function_transform<
            autocxxpy::function_constant<
                &XTP::API::QuoteSpi::OnUnSubscribeAllOptionOrderBook
            >, 
            brigand::list<
            >
        >::value,
        pybind11::return_value_policy::reference,
        pybind11::call_guard<pybind11::gil_scoped_release>()
    );
    c.def("OnSubscribeAllOptionTickByTick",
        autocxxpy::apply_function_transform<
            autocxxpy::function_constant<
                &XTP::API::QuoteSpi::OnSubscribeAllOptionTickByTick
            >, 
            brigand::list<
            >
        >::value,
        pybind11::return_value_policy::reference,
        pybind11::call_guard<pybind11::gil_scoped_release>()
    );
    c.def("OnUnSubscribeAllOptionTickByTick",
        autocxxpy::apply_function_transform<
            autocxxpy::function_constant<
                &XTP::API::QuoteSpi::OnUnSubscribeAllOptionTickByTick
            >, 
            brigand::list<
            >
        >::value,
        pybind11::return_value_policy::reference,
        pybind11::call_guard<pybind11::gil_scoped_release>()
    );
    AUTOCXXPY_POST_REGISTER_CLASS(tag_vnxtp, XTP::API::QuoteSpi, c);
    module_vnxtp::objects.emplace("XTP::API::QuoteSpi", c);
}
void generate_class_XTP_API_QuoteApi(pybind11::object & parent)
{
    pybind11::class_<
        XTP::API::QuoteApi,
        std::unique_ptr<XTP::API::QuoteApi, pybind11::nodelete>,
        PyQuoteApi
    > c(parent, "QuoteApi");
    if constexpr (std::is_default_constructible_v<PyQuoteApi>)
        c.def(pybind11::init<>());
    c.def_static("CreateQuoteApi",
        autocxxpy::apply_function_transform<
            autocxxpy::function_constant<
                &XTP::API::QuoteApi::CreateQuoteApi
            >, 
            brigand::list<
            >
        >::value,
        pybind11::return_value_policy::reference,
        pybind11::call_guard<pybind11::gil_scoped_release>()
    );
    c.def("Release",
        autocxxpy::apply_function_transform<
            autocxxpy::function_constant<
                &XTP::API::QuoteApi::Release
            >, 
            brigand::list<
            >
        >::value,
        pybind11::return_value_policy::reference,
        pybind11::call_guard<pybind11::gil_scoped_release>()
    );
    c.def("GetTradingDay",
        autocxxpy::apply_function_transform<
            autocxxpy::function_constant<
                &XTP::API::QuoteApi::GetTradingDay
            >, 
            brigand::list<
            >
        >::value,
        pybind11::return_value_policy::reference,
        pybind11::call_guard<pybind11::gil_scoped_release>()
    );
    c.def("GetApiVersion",
        autocxxpy::apply_function_transform<
            autocxxpy::function_constant<
                &XTP::API::QuoteApi::GetApiVersion
            >, 
            brigand::list<
            >
        >::value,
        pybind11::return_value_policy::reference,
        pybind11::call_guard<pybind11::gil_scoped_release>()
    );
    c.def("GetApiLastError",
        autocxxpy::apply_function_transform<
            autocxxpy::function_constant<
                &XTP::API::QuoteApi::GetApiLastError
            >, 
            brigand::list<
            >
        >::value,
        pybind11::return_value_policy::reference,
        pybind11::call_guard<pybind11::gil_scoped_release>()
    );
    c.def("SetUDPBufferSize",
        autocxxpy::apply_function_transform<
            autocxxpy::function_constant<
                &XTP::API::QuoteApi::SetUDPBufferSize
            >, 
            brigand::list<
            >
        >::value,
        pybind11::return_value_policy::reference,
        pybind11::call_guard<pybind11::gil_scoped_release>()
    );
    c.def("RegisterSpi",
        autocxxpy::apply_function_transform<
            autocxxpy::function_constant<
                &XTP::API::QuoteApi::RegisterSpi
            >, 
            brigand::list<
            >
        >::value,
        pybind11::return_value_policy::reference,
        pybind11::call_guard<pybind11::gil_scoped_release>()
    );
    c.def("SetHeartBeatInterval",
        autocxxpy::apply_function_transform<
            autocxxpy::function_constant<
                &XTP::API::QuoteApi::SetHeartBeatInterval
            >, 
            brigand::list<
            >
        >::value,
        pybind11::return_value_policy::reference,
        pybind11::call_guard<pybind11::gil_scoped_release>()
    );
    c.def("SubscribeMarketData",
        autocxxpy::apply_function_transform<
            autocxxpy::function_constant<
                &XTP::API::QuoteApi::SubscribeMarketData
            >, 
            brigand::list<
                autocxxpy::indexed_transform_holder<autocxxpy::string_array_transform, 0 + 1/*self*/>
            >
        >::value,
        pybind11::return_value_policy::reference,
        pybind11::call_guard<pybind11::gil_scoped_release>()
    );
    c.def("UnSubscribeMarketData",
        autocxxpy::apply_function_transform<
            autocxxpy::function_constant<
                &XTP::API::QuoteApi::UnSubscribeMarketData
            >, 
            brigand::list<
                autocxxpy::indexed_transform_holder<autocxxpy::string_array_transform, 0 + 1/*self*/>
            >
        >::value,
        pybind11::return_value_policy::reference,
        pybind11::call_guard<pybind11::gil_scoped_release>()
    );
    c.def("SubscribeOrderBook",
        autocxxpy::apply_function_transform<
            autocxxpy::function_constant<
                &XTP::API::QuoteApi::SubscribeOrderBook
            >, 
            brigand::list<
                autocxxpy::indexed_transform_holder<autocxxpy::string_array_transform, 0 + 1/*self*/>
            >
        >::value,
        pybind11::return_value_policy::reference,
        pybind11::call_guard<pybind11::gil_scoped_release>()
    );
    c.def("UnSubscribeOrderBook",
        autocxxpy::apply_function_transform<
            autocxxpy::function_constant<
                &XTP::API::QuoteApi::UnSubscribeOrderBook
            >, 
            brigand::list<
                autocxxpy::indexed_transform_holder<autocxxpy::string_array_transform, 0 + 1/*self*/>
            >
        >::value,
        pybind11::return_value_policy::reference,
        pybind11::call_guard<pybind11::gil_scoped_release>()
    );
    c.def("SubscribeTickByTick",
        autocxxpy::apply_function_transform<
            autocxxpy::function_constant<
                &XTP::API::QuoteApi::SubscribeTickByTick
            >, 
            brigand::list<
                autocxxpy::indexed_transform_holder<autocxxpy::string_array_transform, 0 + 1/*self*/>
            >
        >::value,
        pybind11::return_value_policy::reference,
        pybind11::call_guard<pybind11::gil_scoped_release>()
    );
    c.def("UnSubscribeTickByTick",
        autocxxpy::apply_function_transform<
            autocxxpy::function_constant<
                &XTP::API::QuoteApi::UnSubscribeTickByTick
            >, 
            brigand::list<
                autocxxpy::indexed_transform_holder<autocxxpy::string_array_transform, 0 + 1/*self*/>
            >
        >::value,
        pybind11::return_value_policy::reference,
        pybind11::call_guard<pybind11::gil_scoped_release>()
    );
    c.def("SubscribeAllMarketData",
        autocxxpy::apply_function_transform<
            autocxxpy::function_constant<
                &XTP::API::QuoteApi::SubscribeAllMarketData
            >, 
            brigand::list<
            >
        >::value,
        pybind11::return_value_policy::reference,
        pybind11::call_guard<pybind11::gil_scoped_release>()
    );
    c.def("UnSubscribeAllMarketData",
        autocxxpy::apply_function_transform<
            autocxxpy::function_constant<
                &XTP::API::QuoteApi::UnSubscribeAllMarketData
            >, 
            brigand::list<
            >
        >::value,
        pybind11::return_value_policy::reference,
        pybind11::call_guard<pybind11::gil_scoped_release>()
    );
    c.def("SubscribeAllOrderBook",
        autocxxpy::apply_function_transform<
            autocxxpy::function_constant<
                &XTP::API::QuoteApi::SubscribeAllOrderBook
            >, 
            brigand::list<
            >
        >::value,
        pybind11::return_value_policy::reference,
        pybind11::call_guard<pybind11::gil_scoped_release>()
    );
    c.def("UnSubscribeAllOrderBook",
        autocxxpy::apply_function_transform<
            autocxxpy::function_constant<
                &XTP::API::QuoteApi::UnSubscribeAllOrderBook
            >, 
            brigand::list<
            >
        >::value,
        pybind11::return_value_policy::reference,
        pybind11::call_guard<pybind11::gil_scoped_release>()
    );
    c.def("SubscribeAllTickByTick",
        autocxxpy::apply_function_transform<
            autocxxpy::function_constant<
                &XTP::API::QuoteApi::SubscribeAllTickByTick
            >, 
            brigand::list<
            >
        >::value,
        pybind11::return_value_policy::reference,
        pybind11::call_guard<pybind11::gil_scoped_release>()
    );
    c.def("UnSubscribeAllTickByTick",
        autocxxpy::apply_function_transform<
            autocxxpy::function_constant<
                &XTP::API::QuoteApi::UnSubscribeAllTickByTick
            >, 
            brigand::list<
            >
        >::value,
        pybind11::return_value_policy::reference,
        pybind11::call_guard<pybind11::gil_scoped_release>()
    );
    c.def("Login",
        autocxxpy::apply_function_transform<
            autocxxpy::function_constant<
                &XTP::API::QuoteApi::Login
            >, 
            brigand::list<
            >
        >::value,
        pybind11::return_value_policy::reference,
        pybind11::call_guard<pybind11::gil_scoped_release>()
    );
    c.def("Logout",
        autocxxpy::apply_function_transform<
            autocxxpy::function_constant<
                &XTP::API::QuoteApi::Logout
            >, 
            brigand::list<
            >
        >::value,
        pybind11::return_value_policy::reference,
        pybind11::call_guard<pybind11::gil_scoped_release>()
    );
    c.def("QueryAllTickers",
        autocxxpy::apply_function_transform<
            autocxxpy::function_constant<
                &XTP::API::QuoteApi::QueryAllTickers
            >, 
            brigand::list<
            >
        >::value,
        pybind11::return_value_policy::reference,
        pybind11::call_guard<pybind11::gil_scoped_release>()
    );
    c.def("QueryTickersPriceInfo",
        autocxxpy::apply_function_transform<
            autocxxpy::function_constant<
                &XTP::API::QuoteApi::QueryTickersPriceInfo
            >, 
            brigand::list<
                autocxxpy::indexed_transform_holder<autocxxpy::string_array_transform, 0 + 1/*self*/>
            >
        >::value,
        pybind11::return_value_policy::reference,
        pybind11::call_guard<pybind11::gil_scoped_release>()
    );
    c.def("QueryAllTickersPriceInfo",
        autocxxpy::apply_function_transform<
            autocxxpy::function_constant<
                &XTP::API::QuoteApi::QueryAllTickersPriceInfo
            >, 
            brigand::list<
            >
        >::value,
        pybind11::return_value_policy::reference,
        pybind11::call_guard<pybind11::gil_scoped_release>()
    );
    c.def("SubscribeAllOptionMarketData",
        autocxxpy::apply_function_transform<
            autocxxpy::function_constant<
                &XTP::API::QuoteApi::SubscribeAllOptionMarketData
            >, 
            brigand::list<
            >
        >::value,
        pybind11::return_value_policy::reference,
        pybind11::call_guard<pybind11::gil_scoped_release>()
    );
    c.def("UnSubscribeAllOptionMarketData",
        autocxxpy::apply_function_transform<
            autocxxpy::function_constant<
                &XTP::API::QuoteApi::UnSubscribeAllOptionMarketData
            >, 
            brigand::list<
            >
        >::value,
        pybind11::return_value_policy::reference,
        pybind11::call_guard<pybind11::gil_scoped_release>()
    );
    c.def("SubscribeAllOptionOrderBook",
        autocxxpy::apply_function_transform<
            autocxxpy::function_constant<
                &XTP::API::QuoteApi::SubscribeAllOptionOrderBook
            >, 
            brigand::list<
            >
        >::value,
        pybind11::return_value_policy::reference,
        pybind11::call_guard<pybind11::gil_scoped_release>()
    );
    c.def("UnSubscribeAllOptionOrderBook",
        autocxxpy::apply_function_transform<
            autocxxpy::function_constant<
                &XTP::API::QuoteApi::UnSubscribeAllOptionOrderBook
            >, 
            brigand::list<
            >
        >::value,
        pybind11::return_value_policy::reference,
        pybind11::call_guard<pybind11::gil_scoped_release>()
    );
    c.def("SubscribeAllOptionTickByTick",
        autocxxpy::apply_function_transform<
            autocxxpy::function_constant<
                &XTP::API::QuoteApi::SubscribeAllOptionTickByTick
            >, 
            brigand::list<
            >
        >::value,
        pybind11::return_value_policy::reference,
        pybind11::call_guard<pybind11::gil_scoped_release>()
    );
    c.def("UnSubscribeAllOptionTickByTick",
        autocxxpy::apply_function_transform<
            autocxxpy::function_constant<
                &XTP::API::QuoteApi::UnSubscribeAllOptionTickByTick
            >, 
            brigand::list<
            >
        >::value,
        pybind11::return_value_policy::reference,
        pybind11::call_guard<pybind11::gil_scoped_release>()
    );
    AUTOCXXPY_POST_REGISTER_CLASS(tag_vnxtp, XTP::API::QuoteApi, c);
    module_vnxtp::objects.emplace("XTP::API::QuoteApi", c);
}
